package com.axzhengxin.platform.afterloan.service;

import com.axzhengxin.platform.afterloan.domain.FspBizApplyInfo;
import com.axzhengxin.platform.afterloan.domain.FspBizApproveInfo;
import com.axzhengxin.platform.afterloan.domain.FspBizLoanInfo;
import com.axzhengxin.platform.business.domain.BizApproveDetail;

import java.util.List;

/**
 * IAfterLoanBizInfoService
 * 查询客户详情页关联业务信息的数据服务
 *
 * @author jiangnan
 * @date 2021/3/2
 */
public interface IAfterLoanBizInfoService {

    /**
     * 查询客户相关申请信息（基于当前用户身份进行数据范围筛选）
     *
     * @param bizApplyInfo 查询参数实体
     * @return 申请信息集合
     */
    List<FspBizApplyInfo> selectBizApplyInfoList(FspBizApplyInfo bizApplyInfo);

    /**
     * 查询客户相关授信信息（基于当前用户身份进行数据范围筛选）
     *
     * @param bizApproveInfo 查询参数实体
     * @return 授信信息集合
     */
    List<FspBizApproveInfo> selectBizApproveInfoList(FspBizApproveInfo bizApproveInfo);

    /**
     * 查询用户可见范围内全部授信信息（基于当前用户身份进行数据范围筛选）
     *
     * @param bizApproveInfo 查询参数实体
     * @return 授信信息集合
     */
    List<FspBizApproveInfo> selectAllBizApproveInfoList(FspBizApproveInfo bizApproveInfo);

    /**
     * 查询用户可见范围内未到期授信信息（基于当前用户身份进行数据范围筛选）
     *
     * @param bizApproveInfo 查询参数实体
     * @return 授信信息集合
     */
    List<FspBizApproveInfo> selectBizApproveInfoUnexpiredList(FspBizApproveInfo bizApproveInfo);

    /**
     * 查询客户相关放款信息（基于当前用户身份进行数据范围筛选）
     *
     * @param bizLoanInfo 查询参数实体
     * @return 放款信息集合
     */
    List<FspBizLoanInfo> selectBizLoanInfoList(FspBizLoanInfo bizLoanInfo);

    /**
     * 查询所有放款信息（基于当前用户身份进行数据范围筛选），用于贷后管理-全部放款界面的加载
     *
     * @param fspBizLoanInfo 查询参数集合
     * @return 结果集合
     */
    List<FspBizLoanInfo> selectAllFspBizLoanInfoList(FspBizLoanInfo fspBizLoanInfo);

    /**
     * 查询所有未结清放款信息（基于当前用户身份进行数据范围筛选），用于贷后管理-未结清放款界面的加载
     *
     * @param fspBizLoanInfo 查询参数集合
     * @return 结果集合
     */
    List<FspBizLoanInfo> selectUnfinishedFspBizLoanInfoList(FspBizLoanInfo fspBizLoanInfo);

    /**
     * 根据已获取的授信集合获取综合授信记录
     * @param list
     * @return
     */
    List<BizApproveDetail> selectBizApproveDetailList(List<String> list);
}
